Soru & Cevap

Başka Uygulamadan Veri Alma ve Intent Filter Ayarı

24.02.2014 - 09:47

Merhaba. Barkod okuyarak sayım işlemi yapan bir uygulama geliştiriyorum. Zxing kütüphanesini kullanarak çalışmamı tamamladım. Ancak kullandığım Motorola marka el terminalindeki DataWedge uygulaması, barkodu Zxing'den daha hızlı yakalıyor ve bu sebeple uygulamanın bir versiyonunu da DataWedge kullanarak yapmak istedim.

Sorunum şu: Motorola'nın DataWedge uygulaması üzerinden barkod yakalama işlemini 2 ayrı Activity üzerinde yapmam gerekiyor. Bunlardan birisi FiyatGor, diğeri ise SayimYeniEkle. Mevcut durumda, FiyatGor'de barkod okuttuktan sonra "Complete action using" menüsünde hem FiyatGor'u hem de SayimYeniEkle'yi seçenekler olarak sunuyor ve hangisini kullanarak işlemi tamamlayayım diye soruyor. Bense şunu istiyorum: FiyatGor isimli Activity üzerinde barkod okutma işlemi yapıldığında uygulama hiç soru sormadan direkt FiyatGor action'ını kullansın, SayimYeniEkle isimli Activity üzerinde barkod okutma işlemi yapıldığında da uygulama direkt SayimYeniEkle action'ını kullansın. "Complete action using" sorusu çıkmasın.

Manifest dosyamdaki ilgili activity ve intent filterların ayarları aşağıdaki gibi:

[code]<activity
    android:name="com.example.barcodeapp.FiyatGor"
    android:label="@string/title_activity_fiyat_gor"
    android:launchMode="singleTop"
    android:screenOrientation="portrait" >
    <intent-filter>
        <action android:name="com.motorolasolutions.emdk.datawedge.DWDEMO"/>
        <category android:name="android.intent.category.DEFAULT"/>
    </intent-filter>
</activity>[/code]

[code]<activity
    android:name="com.example.barcodeapp.SayimYeniEkle"
    android:label="@string/title_activity_sayim_yeni_ekle"
    android:launchMode="singleTop"
    android:screenOrientation="portrait" >
    <intent-filter>
        <action android:name="com.motorolasolutions.emdk.datawedge.DWDEMO"/>
        <category android:name="android.intent.category.DEFAULT"/>
    </intent-filter>
</activity>[/code]

Bu durumu nasıl çözebilirim? Teşekkürler.

114 Görüntülenme

3 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

Profile picture for user rhanayt
rhanayt
18.03.2014 - 10:56

Direk diğer uygulamaya geçmesini istediğiniz yerde intent ile uygulamayı başlatırsanız istediğiniz sonuca ulaşırsınız diye düşünüyorum.

Profile picture for user Akeron
Akeron
24.02.2014 - 03:35

Problemdeki dinamikleri çok anlamış değilim doğrusu. Başka bir Activity'den bir veri almak için startAcitivityForResult kullanarak bu işlemi yapabilecek aktivitelerin Action, Type,Category,Data gibi bilgilerini girerek böyle bir servisi olan Activity'i "implicit" olarak bir sonuç için çağırabilirsin.

Eğer çalıştırmak istediğin istediğin Activity belli ise "explicit" olarak Intent'in içinde Component belirliyerek bu işlemi gerçekleştirebilirsin.

Uygulamanda bulunan iki aktivite de implicit olarak başka uygulamalar tarafından çağırılacaklar ise ve sen kesişmelerini istemiyorsan, iki aktivite için farklı Action lar belirlemen en mantıklısı.

Umarım yardımcı olabilmişimdir. Eğer bir sorunun devam ediyor ise bana ulaşabilirsen. Yardımcı olmaktan memnuniyet duyarım.

picture-3606-1408610132.jpg
cgural
24.02.2014 - 12:02

Aynı action'ı fakat farklı category'leri olan intent-filter'a sahip Activity'ler haline getirirseniz, seçim diyalogunu göstermeden o Activity'yi açtırabilirsiniz. Bu şekilde Intent çözülümü aşamasında bu iki Activity'yi farklı amaçlarla kullanabilirsiniz.